package com.hzncc.flowable_diboot.dto.bpm;

import com.diboot.core.binding.query.BindQuery;
import com.diboot.core.binding.query.Comparison;
import com.hzncc.flowable_diboot.entity.bpm.BpmCategory;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
* 流程分类 DTO定义
*
* @author MyName
* @version 1.0
* @date 2024-06-20
 * Copyright © MyCorp
*/
@Getter
@Setter
@Accessors(chain = true)
public class BpmCategoryDTO extends BpmCategory {
private static final long serialVersionUID = 1919090839360793717L;
    /**
    * 分类状态 起始
    */
    @BindQuery(comparison = Comparison.GE, column = "status")
    private Long statusBegin;

    /**
    * 分类状态 截止
    */
    @BindQuery(comparison = Comparison.LE, column = "status")
    private Long statusEnd;

    /**
    * 分类排序 起始
    */
    @BindQuery(comparison = Comparison.GE, column = "sort")
    private Long sortBegin;

    /**
    * 分类排序 截止
    */
    @BindQuery(comparison = Comparison.LE, column = "sort")
    private Long sortEnd;

    /**
    * 创建时间
    */
    @BindQuery(comparison = Comparison.GE)
    private LocalDateTime createTime;

    /**
    * 创建时间 起始
    */
    @BindQuery(comparison = Comparison.GE, column = "create_time")
    private LocalDate createTimeBegin;

    /**
    * 创建时间 截止
    */
    @BindQuery(comparison = Comparison.LT, column = "create_time")
    private LocalDate createTimeEnd;

    /**
    * 更新时间
    */
    @BindQuery(comparison = Comparison.GE)
    private LocalDateTime updateTime;

    /**
    * 更新时间 起始
    */
    @BindQuery(comparison = Comparison.GE, column = "update_time")
    private LocalDate updateTimeBegin;

    /**
    * 更新时间 截止
    */
    @BindQuery(comparison = Comparison.LT, column = "update_time")
    private LocalDate updateTimeEnd;

    public LocalDate getCreateTimeEnd() {
        if (getCreateTime() != null) {
            return getCreateTime().plusDays(1).toLocalDate();
        }
        if (createTimeEnd != null) {
            return createTimeEnd.plusDays(1);
        }
        return null;
    }

    public LocalDate getUpdateTimeEnd() {
        if (getUpdateTime() != null) {
            return getUpdateTime().plusDays(1).toLocalDate();
        }
        if (updateTimeEnd != null) {
            return updateTimeEnd.plusDays(1);
        }
        return null;
    }

}